
//Array.of() 方法创建一个具有可变数量参数的新数组实例，而不考虑参数的数量或类型。

// it's not initializing an array of length 3
const array1 = Array.of(3) // [ 3 ]
const array2 = Array.of() // []
const array3 = Array.of(undefined) // [ undefined ]
const array4 = Array.of(1, 2, 3) // [ 1, 2, 3 ]

// 通过 Array.from 方法将类数组对象、arguments 对象、NodeList 对象转换为真正的数组。
// 1）、类数组对象
const arrayLike = {
    0: 'fatfish',
    1: 'medium',
    length: 2
  }
  const array5 = [].slice.call(arrayLike) // ['fatfish', 'medium']
  // A more convenient way
  const array6 = Array.from(arrayLike) // ['fatfish', 'medium']
//   2）、节点列表
// const domsNodeList = document.querySelectorAll('div')
// const domsArray = Array.from(domsNodeList) // [ dom, dom, dom, ... ]
// 3）、 Arguments


const logInfo = function () {
    console.log('arguments', arguments)
    console.log('Array.from arguments', Array.from(arguments))
  }
  logInfo('fatfish', 100)
  logInfo('fatfish')

//   3、 includes 数组中是否包含某个值

const nums = [ 1, 2, 3, 4 ]
const num = 1
if (nums.includes(num)) {
  console.log(num) // 1
}
// 5、 flat


const array = [ 1, [ 2, [ 3, [ 4, [ 5 ] ] ] ] ]
// The default depth is 1
const flat1 = array.flat() // [ 1, 2, [ 3, [ 4, [ 5 ] ] ] ]
const flat2 = array.flat(2) // [ 1, 2, 3, [ 4, [ 5 ] ] ]
const flatAll = array.flat(Infinity) // [ 1, 2, 3, 4, 5 ]

// 6、 findIndex

const array8 = [ -1, 0, 10, 10,  20, 100 ]
const index1 = array.findIndex((num) => num < 0) // 0
const index2 = array.findIndex((num) => num >= 10) // 2
